Systems and methods for multiplexing digital data

ABSTRACT

System and methods are provided for multiplexing digital data. In accordance with certain implementations, a method is provided that includes coordinating transmission of digital data elements of a packet including digital data elements arranged  1  . . . n. The coordinating step may include transmitting a first stream of data elements stored in memory, starting with data element  1  of the packet and proceeding upward through the data elements of the packet in sequential order, and transmitting a second stream of data elements stored in the memory, starting with data element n of the packet and proceeding downward through the data elements of the packet in sequential order, wherein transmitting of the first stream and the second stream is attempted to be performed during the same time. The method may also include terminating any sending of the first and second streams of data elements when the entire packet has been received.

This application is a continuation of U.S. application Ser. No. 10/730,837, filed Dec. 8, 2003, now U.S. Pat. No. 7,738,513, which is a divisional application of U.S. application Ser. No. 10/119,103, filed Apr. 8, 2002, now U.S. Pat. No. 6,687,263, which claims the right to priority of Netherlands Application No. 1017870, filed Apr. 18, 2001. Each of the above applications is incorporated herein by reference in their entireties.

FIELD OF THE INVENTION

The invention relates to a method for multiplexing digital data, and software for that purpose.

BACKGROUND

In practice very many methods to send data are known, particularly through a network. An example are digital data that are sent through the internet, but also digital telephone signals, such as for instance in case of cordless GSM telephones.

In practice there are also various methods known for multiplexing digital data.

The data are sent via a medium in the form of data packets. This can take place via a physical cabling in for instance copper or glass fibre, or via infrared or radio waves.

Because the capacity, often coupled to bandwidth, of the media over which the data are being sent mostly is too small, the data are often compressed. However, this has often appeared not to be sufficient.

Additionally many of these methods are aimed at optimising the data transfer between two computers.

SUMMARY OF THE INVENTION

It is among others an object of the present invention to at least partially solve these problems. To that end the invention provides a method for multiplexing digital data, wherein a packet of digital data is simultaneously sent from front to rear and from rear to front. Additionally the invention provides a method for multiplexing digital data, wherein a packet of digital data is simultaneously sent from the beginning of the packet towards the end and from the end towards the beginning. Additionally the invention provides a method for multiplexing digital data, wherein simultaneously a packet of digital data is sent and the same packet is sent backwards.

By splitting the data stream in two simultaneous streams, wherein the one stream starts sending the date from the front and works its way to the rear, and the other stream works its way from the rear to the front, the possibility is given to very quickly send data between and to for instance computers. In most of the cases, the invention relates to sending this data via electromagnetic waves, eg electronically or optically.

Another advantage of the method is that no other control signals or techniques are necessary to reconstruct the entire signal or data packet or to adjust both streams to each other: the signal or data packet is complete when the two streams meet each other, or when the data buffer is full. Delays in one of either lines do not lead to loss of signal.

In many cases the data connection is a-symmetrical: the transmission capacity is smaller than the receiving capacity. In the method according to the invention it is possible, despite the smaller transmission capacity, to nonetheless use the full receiving capacity. This may for instance be of importance in so-called streaming broadcasts through the internet, wherein through the Internet digital radio broadcasts and in future even television or video can take place. Both data streams can also enter via various lines.

For instance the one data stream can for example enter via a telephone line and the second data stream via a cable, the electricity grit or cordless via GSM. It is also possible to let the data streams enter via one cable by means of physical multiplexing. The invention therefore actually offers a specific form of digital multiplexing.

Preferably the present invention relates to a method as described, wherein a first device sends the data from front to rear to a third device, and a second device sends the same data from rear to front to the third device. As a result the third device is able to have all data available very quickly.

Preferably the third device places the data in a data buffer the size of the packet, and sends a signal to the first and second device when either the buffer is full, or stops sending confirmations until the buffer is full. In this way the coordination between both streams is very simple.

It is preferred that in a method according to the invention a first device sends data from front to rear to a second device, and simultaneously backwards to a third device. As a result the possibility is offered to very quickly provide two devices with all data, with an optimally used bandwidth. In this method it is preferred that the second device and third device immediately at receipt forward the data they received from the first device to each other. As a result both devices can optimally use their bandwidth and transmission capacity.

In said method it is preferred that the second and third device have been provided with a data buffer the size of the packet, wherein the received data are placed in the data buffer and the first and second device send a signal to the first device when the respective data buffer is full.

Additionally the invention relates to a method for sending a data packet to a first device in an organic (also called ‘ad-hoc’) data network of devices, wherein the devices have been provided with a data processing unit, a data buffer and software having receiving routines for receiving data packets from at least two transmitting devices in the data network, wherein at least two other devices in the network simultaneously send complementary data packets to the first device which added together form the data packet.

Preferably said software has further been provided with transmission routines for transmitting data packets, received from the transmitting device or devices in the data network to at least one receiving device that is connected to the data network, independent of the transmitting device or devices.

Additionally the invention relates to a method for receiving digital data, wherein a device provided with data storage means creates a data buffer in the data storage means the site of a packet of digital data, and simultaneously receives a first stream of digital data and receives a second stream of digital data, wherein the device fills the data buffer from front to rear with the first stream of digital data and fills the data buffer from rear to front with the second stream of digital data.

Preferably the device informs the source or sources of the streams of digital data when a data buffer is full. As a result the coordination is simple.

Additionally the invention relates to a method for sending digital data, wherein a device provided with data storage means creates a data buffer in the data storage means, stores digital data in the data buffer, and from the front of the data buffer and the rear of the data buffer sends the digital data in two streams.

Preferably the device stops sending after receipt of a signal. As a result the coordination is again simple.

Additionally the invention relates to software provided with routines for carrying out the method according to one of methods mentioned above.

From the above description, in combination with the figures and their description, it will immediately be clear to an expert which routines are necessary to that end, and how said routines have to function with respect to each other. Such software may of course be immediately implemented in hardware, for instance in a PROM, EPROM or the like.

Additionally, the invention relates to an software for sending a packet of digital data, comprising a first transmission routine for sending a first stream of digital data starting from the front of the packet of digital data and a second transmission routine for sending a second stream of digital data starting from the end of the packet of digital data

Furthermore, the invention relates to software for receiving a packet of digital data, comprising a first receiving routine for receiving a first stream of digital data and a second receiving routine for simultaneously receiving a second stream of digital data, and a first storing routine for storing the first stream of digital data in a memory starting at the front of the memory and filling the memory towards the end, and a second storing routine for storing the second stream of digital data starting at the end of the memory and filling the memory towards the front, and a stop routine for ending the receiving of digital data when the memory is full.

Furthermore, the invention relates to an apparatus for sending a packet of digital data, comprising memory means for storing the packet of digital data, first sending means for sending a first stream of digital data, starting at the front of the memory means and second sending means for sending a second stream of digital data, starting at the end of the memory means.

Furthermore, the invention relates to an apparatus for receiving a packet of digital data, comprising memory means for storing the packet of digital data, first receiving means for receiving a first stream of digital data, and storing it in said memory means, starting from the front of the memory means, and second receiving means for receiving a second stream of digital data, and storing it in said memory means, starting from the back of the memory means.

Additionally the invention relates to a carrier provided with software as described, and to a device provided with software as described.

In a specific embodiment of the invention, packets of digital data are sent in the form of bitstreams. In another embodiment, the packets are divided into smaller sub-packets, for instance numbered 1 . . . n. In this case, the sub-packets are sent 1, 2, etc in the first stream, i.e. sequentially, starting with the first sub-packet, and the sub-packets are sent n, n−1, . . . etc in the second stream, i.e. sequentially, starting with the last sub-packet. In a further embodiment, these two streams are sent almost simultaneous. The two streams can be sent over the same carrier, for instance using conventional multiplexing techniques, or they can be sent over entirely different carriers, for instance cable modem and telephone line. The digital data can also be of another form instead of the now-used binary data.

BRIEF DESCRIPTION OF THE DRAWINGS

The invention is further elucidated on the basis of the figures that are exemplary embodiments of the invention. However, the invention is not limited to said exemplary embodiments. Shown in the figures is:

FIG. 1 the splitting of one signal into two signals and the adding together at the receiver;

FIG. 2 the receipt of a split signal by a receiver from two physically separated sources,

FIG. 3 the provision of two receivers with one signal,

FIG. 4 the provision of three receivers with one signal,

FIG. 5 an alternative for the situation of FIG. 4,

FIG. 6 an example of the relation between bandwidth and the quantity of signal,

FIG. 7 a second example of the relation between bandwidth and quantity of signal,

FIG. 8A-8C a receiving device,

FIG. 9A-9C a sending device,

FIG. 10A-10D a device which receives and almost simultaneously sends, and

FIG. 11 the process of sending and receiving.

DESCRIPTION OF PREFERRED EMBODIMENTS

FIG. 1 shows a situation in which a signal 5 in a conventional manner enters a receiver 3. The receiver 3 splits the signal, or each data packet from which the signal has been built up, into two streams 1 and 2 to forward it to receiver 4. Stream 1 is the signal sent from the front, that means the first bit of the data packet or the signal is sent first, then the second, etc. Stream 2 is the signal 5 or a data packet thereof, but then backwards, that means first the last bit is sent then the last but one, etc. Therefore, as both streams make up the entire stream, the two streams may be considered as complementary streams.

Receiver 4 simultaneously fills its data buffer from the front with signal 1 and from the rear with signal 2. This can take place by means of a computer program, but can also be implemented hardware-wise. When the buffer is full, that means the complete signal or data packet has been received, receiver 4 sends a signal to receiver/transmitter 3 that the buffer is full, that means that the signal has been received. It is of course also possible that the receiver 4 keeps sending a signal to receiver/transmitter 3 until the buffer is full, or just closes down the connection when the buffer is full, or sets the port at high or low.

The principle depicted in FIG. 1, can also be used in FIG. 2 with 2 sources 3, 3′ that transmit to a receiver 4. In that case the sources 3, 3′ receive the entire for already split) signal or data packet 5, and each send a partial signal 1 or 2, respectively, to receiver 4. This offers advantages when the transmission capacity of sources 3 and 3′ is lower than the receiving capacity of receiver 4. The receiver 4 may even forward the reconstructed signal or data packet 6 in its entirety again.

FIG. 3 shows an example of the method according to the present invention, wherein one source 3 splits a signal or data packet 5 into two complementary streams 1 and 2. The one stream is sent to receiver 4, the other stream to receiver 4′. Both receivers 4 and 4′ send what is received to each other, so that both obtain a complete signal or data packet again. This offers advantages when the transmission capacity/bandwidth of 3 is limited, but/and the capacity between 4 and 4′ is sufficient for exchange of data.

FIG. 4 shows an example wherein a source 3 splits a signal or data packet 5 into two streams, wherein stream 1 is sent to receivers 4, 4″, and stream 2 to receiver 4′. Receiver 4′ forwards its part of the signal or data packet to 4 and 4″, whereas 4 forwards its part to 4′. In the optimal case all receivers 4, 4′ and 4″ will receive the entire signal or data packet in less time than usually needed in conventional point-to-point connections, or while using less bandwidth.

FIG. 5 shows an example of the use of the method according to the invention, wherein a source 3 having limited data transfer capacity splits a signal or data packet 5 into two streams 1 and 2. Stream 1 is sent to receiver 4, stream 2 to receiver 4″, and receivers 4 and 4″ forward their part to receiver 4′. As a result three receivers have received the entire signal or data packet within less time usually needed to send the packet in its entirety to all three receivers, and the bandwidth used is smaller.

FIGS. 6 and 7 show calculation examples wherein in case of FIG. 6 the available bandwidth from transmitter 3 to receivers 4 and 4′ is almost the same. In that case receivers 4 and 4′ will have received the data in 50% of the usually necessary time, and this is also the load for transmitter 3, seen in bandwidth, only 2 times 50% in total instead of 2 times 100%. Thus, digital data is sent without any overhead (transmitter 3 may stop sending when all data is sent) and very fast.

In the calculation example of FIG. 7 the connection is a-synchronous. Receiver 4′ receives 91% of the total data packet, and receiver 4 receives 11% of the total data packet. The net result is that transmitter 3 in the end only needs to send the total data packet once. Additionally there will be a small gain of speed in this unfavourable case. In this case, the sending capacity from transmitter 3 to receiver 4, as well as the sending capacity from receiver 4 to receiver 4′. Due to very low transmission capacity from receiver 4 to receiver 4′ (or delays) only 9% instead of 11% could be transmitted from receiver 4 to receiver 4′.

In FIG. 8A-8C, the process of receiving a digital data packet split into two streams according to the present invention is shown. In FIG. 8A, two streams 21 and 22 are received and put into data buffer 20. The first part of the received data from stream 21 is put in place 1, the first part of received data from stream 22 is put in place n. I FIG. 8B, an intermediate step is shown. In this case, via stream 21 the 4th data part is received and is put into buffer at location 4, while via stream 22 also another (n-i th) data part is received. Despite the fact that the two streams are not equally fast, no overhead is needed. In FIG. 8C, the two streams meet, the buffer is full. This will trigger the device to stop receiving, or send a signal that the digital data packet is complete.

In FIGS. 9A-9C, the sending side is shown. In FIG. 9A, data buffer 23 is full of data. The device starts taking data from data buffer, starting at the front of the data buffer 23, and starts sending the data. At the same time, the device starts taking data from the back of data buffer 23, position n, and sends this data. In FIG. 9B, taken some time later, it can be seen that the device takes data part 3 from data buffer 23 and sends it. At the same time, from the rear end of the data buffer the fifth data part is taken and send. The device sequentially takes the next, etc, so the next data parts would be number 4 and the 6th from the back. In FIG. 9C, the last data parts are taken. Again, it can be seen that sending is swift, and without complex overhead.

FIGS. 10A-10D show the situation where there is a device which both sends and receives according to the present invention. This time, data buffer 26 is empty. The device starts receiving data parts via streams 28 and 29, stream 28 is put at the first place, and stream 28 will subsequently fill data buffer 26 from the front to the back. The first data part received from stream 29 will be put into the last position, n, of the data buffer 26. Subsequently, stream 29 will fill data buffer 26 from the back to the front, until the buffer is full.

At the same time, the device starts sending data parts via streams 30 and 31. Stream 30 starts from the front of the data buffer and stream 31 starts from the back of the data buffer.

In FIG. 10C, it can be seen that in this case, the device receives data parts faster than it sends them. In FIG. 10C, all the data parts are received: the two streams 28 and 29 meet. The device keeps sending via streams 30 and 31. In FIG. 10D, the streams 30 and 31 meet, and the device can stop sending. This is all possible with a minimum on overhead.

In FIG. 11, The process of sending and receiving are depicted in one figure. Apparatus 40 having data buffer 24 sends two streams of data 44 and 45. Apparatus 41 receives these two streams as streams 46 and 47, and puts the data in data buffer 43. Again, the sending apparatus 40 has two streams 44 and 45, one starting at the front and one at the back of data buffer 42. Receiving apparatus 41 receives two streams, and places one stream in the front, and one in the back of data buffer 43.

For that matter the method according to the invention can for instance be used in GSM or other cordless telephony. A conversation or a data stream can then be divided into packets which, in accordance with the method according to the invention, can be sent. Use can then also be made of the available bandwidth: each data stream can be sent over another band, so that optimal use is made of the available bandwidth.

It is to be understood that the above description is included to illustrate the operation of the preferred embodiments and is not meant to limit the scope of the invention. The scope of the invention is to be limited only by the following claims. From the above discussion, many variations will be apparent to one skilled in the art that would yet be encompassed by the spirit and scope of the present invention. 

1. A method for multiplexing digital data including a packet of digital data elements arranged 1 . . . n, the method comprising: coordinating transmission of the data elements of the packet using a first stream and a second stream, wherein coordinating comprises: transmitting a first stream of data elements stored in memory, starting with data element 1 of the packet and proceeding upward through the data elements of the packet in sequential order; transmitting a second stream of data elements stored in the memory, starting with data element n of the packet and proceeding downward through the data elements of the packet in sequential order; and terminating any sending of the first and second streams of data elements when the entire packet has been received; wherein transmitting of the first stream and second stream is attempted to be performed during the same time.
 2. The method according to claim 1, wherein a first device is configured to transmit the first stream of data elements to a third device, and a second device is configured to transmit the second stream of data elements to the third device.
 3. The method according to claim 2, further comprising receiving a signal from the third device when a data buffer of the third device is full with the data elements, the data buffer having a size of the packet.
 4. The method according to claim 1, wherein a first device is configured to transmit the first stream to a second device, and the first device is configured to transmit the second stream to a third device.
 5. The method according to claim 4, further comprising forwarding data elements, upon receipt from the first device, from the second device to the third device and vice versa.
 6. The method according to claim 5, further comprising receiving a signal from at least one of the second device and third device when a data buffer of the second device or the third device is full with the data elements, the data buffer of the second device or the third device having a size of the packet.
 7. A method for receiving a data packet of digital data elements arranged 1 . . . n at a first device in a network of devices, the first device including a data processing unit, a data buffer, and receiving routines for receiving data elements from at least two transmitting devices in the network, the method comprising: receiving, at the first device, data elements from a second device, the data elements being sent from the second device starting from data element 1 of the data packet and proceeding upward through the data elements of the data packet in sequential order; further receiving, at the first device, data elements from a third device, the data elements being sent from the third device starting from data element n of the data packet and proceeding downward through the data elements of the data packet in sequential order; and combining, with the data processing unit of the first device, the data elements sent by the second device and the data elements sent by the third device to form a copy of the data packet at the first device, wherein data element 1 and data element n are attempted to be sent by the second and third devices before at least one of the other elements is sent.
 8. A method for receiving a packet of data elements 1 . . . n which are sent in at least a first stream of data elements sent starting with data element 1 of the packet and proceeding upward in sequential order, and a second stream of data elements sent starting with data element n of the packet and proceeding downward in sequential order, the method comprising: providing a data buffer for storing the n data elements; receiving the first stream of data elements and the second stream of data elements; attempting to fill the data buffer starting at the front of the data buffer and proceeding sequentially upward with the first stream of data elements; and attempting to fill the data buffer starting at the rear of the data buffer and proceeding sequentially downward with the second stream of data elements; wherein data element 1 and data element n are attempted to be filled in the data buffer during the same time.
 9. The method according to claim 8, further comprising informing one or more sources of the first and second streams of data elements when the data buffer is full.
 10. A method for sending a packet of digital data elements 1 . . . n, the method comprising: providing at least one data buffer for storing the n digital data elements; attempting to send the digital data elements in a first stream starting with data element 1 of the packet and proceeding upward through the data elements of the packet in sequential order; and attempting to send a second stream starting with data element n of the packet and proceeding downward through the data elements of the packet in sequential order; wherein attempted sending of the first stream and the second stream is performed during the same time.
 11. The method according to claim 10, further comprising: receiving an instruction to terminate the attempted sending of the first stream and the second stream upon receipt of a signal that a receiving buffer is full.
 12. A non-transitory computer-readable storage medium storing a computer program which, when executed by a computer, causes the computer to perform a method of sending a packet of digital data elements arranged 1 . . . n, the method comprising: providing a first instruction to initiate transmission of a first stream of digital data elements starting with data element 1 of the packet and proceeding upward through the data elements of the packet in sequential order; and providing a second instruction to initiate transmission of a second stream of digital data elements starting with data element n of the packet and proceeding downward through the data elements of the packet in sequential order; wherein providing the first and second instructions is performed during the same time.
 13. A non-transitory computer-readable storage medium storing a computer program which, when executed by a computer, causes the computer to perform a method of receiving a packet of digital data elements arranged 1 . . . n, the method comprising: executing a first receiving routine for receiving a first stream of digital data, and a second receiving routine for receiving a second stream of digital data; executing a first storing routine for storing the first stream of digital data in a memory starting at the front of a buffer of the memory and sequentially filling the memory towards the back of the buffer, and a second storing routine for storing the second stream of digital data starting at the back of the buffer of the memory and filling the memory sequentially towards the front of the buffer; and executing a stop routine for ending the receiving of digital data when the memory is full or the n digital data elements have been received; wherein execution of the first receiving routine and execution of the second receiving routine is performed during the same time.
 14. A system for sending a packet of digital data elements 1 . . . n, comprising: a memory for storing the packet of digital data; a first transmitter for sending a first stream of digital data elements, starting with data element 1 of the packet and proceeding upward through the data elements of the packet in sequential order; and a second transmitter for sending a second stream of digital data elements, starting with data element n of the packet and proceeding downward through the data elements of the packet in sequential order; wherein the first transmitter and second transmitter are configured to attempt sending of the first stream and the second stream during the same time.
 15. An apparatus for receiving a packet of digital data elements, comprising: a memory; a first receiver configured to receive a first stream of digital data elements of the packet, and store the first stream of digital data elements in the memory, starting from the front of a buffer of the memory and proceeding toward the back of the buffer of the memory; and a second receiver configured to receive a second stream of digital data elements of the packet, and store the second stream of digital data elements in the memory, starting from the back the buffer of the memory and proceeding toward the front of the buffer of the memory; wherein the first receiver and second receiver are configured to process the first stream and the second stream during the same time.
 16. The apparatus of claim 15, wherein at least one of the first receiver and the second receiver is configured to send a signal to a transmitter when the memory is full. 